The approaches described in this section could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Data communication networks may comprise large numbers of devices, some of which are of varying types. Each network device maintains its own configuration, often of considerable complexity. A typical network device, such as a router or switch, provides a command interface that is accessible using character-based commands through Telnet, Secure Shell (SSH), and a serial port interface for changing the device status or configuration. Each configuration command has an associated syntax. A Network Management Station (NMS) can use configuration commands to provide a higher level or enhanced management capability to the network operator. To do so, a NMS requires knowledge of the device configuration commands and the syntax of the commands to accomplish changing the configuration of a device.
One way of provisioning a configuration on a device is to issue one or more commands manually. Human operators may find it impossible to remember the syntax and semantics associated with each kind of device and for each type of configuration. Each device on each interface may require a different configuration command and the semantics for each may vary. In addition, even in similar types of devices, different vendors may adopt different standards, making the task of configuration even more complex.
Furthermore, there are multiple dependencies between network devices, often requiring certain aspects of their respective configuration to be properly coordinated. As a result, the configuration of networks in their entirety has become increasingly complex.
Configuration complexity lies at the heart of many issues. For example, configuration complexity leads to errors, compromising the network. By some accounts, human configuration errors are responsible for more than 50% of network downtime and the root cause of more than 50% of successful cyber-attacks.
Also, it is difficult to troubleshoot and analyze networks whose configurations are complex. While automated tools are good at addressing routine tasks, such tools reach their limits when difficult-to-solve problems arise. The effectiveness to address such problems is generally a function of the complexity of the network and its configuration.
Additionally, configuring a network is labor-intensive, footprint-intensive, and performance-intensive. For example, many lines of configuration may need to be entered or generated for each network device. Configuration requires storage and memory while validating and applying configurations requires CPU.